define(function(require, exports){
	var pubjs	= require('pubjs');
	var view	= require('@base/view');
	var util	= require('util');

	var Base = view.container.extend({
		init:function(config){
			config = pubjs.conf(config, {
				'tplFile':	'admin/tpl/command/deduct.tpl',
				'view_model': {
					'headTitle': '监测广告位扣费生成'
					,'UserId': ''
					,'SpotId': ''
				},
				'url': 'command/deduct'
			});

			this.$id = null;
			this.Super('init', arguments);
		}
		,afterBuild:function(){
			var self = this;


			var config = {
				'save': {
					'value': LANG('保存'),
					'class': 'btn btn-confirm mt10'
				},
				'cancel': {
					'value': LANG('取消'),
					'class': 'btn btn-link mr10 mt10'
				},
				// 投放日期开始
				startTime: {
					value: util.date('Y-m-d'),
					buttons: null
				},
				// 投放结束日期
				endTime: {
					value: util.date('Y-m-d')
				},
				userTip: {
					width: 300,
					data: LANG('可以选填扣除具体用户， 以逗号分隔多个用户')
				},
				spotTip: {
					width: 300,
					data: LANG('可以选填扣除某个广告位的扣费, 以逗号分隔广告位(注意的是，如果用户填了，且广告位也填了，会取且的关系。)')
				}
			};

			self.buildFromTemplate(config);
		}
		,save: function() {
			var self = this;
			var c = self.getConfig();
			var data = self.getData();
			if(self.validate(data)) {
				var conMess = LANG('确认开始扣费吗?');
				pubjs.confirm(conMess, function(res) {
					if(res) {
						pubjs.loading.show();
						pubjs.mc.send(c.url, data, function(err, data) {
							pubjs.loading.hide();
							if(err) {
								pubjs.alert(err.message);
								return false;
							}

							pubjs.alert(data && data.message);
						});
					}
				});
			}

			return false;
		}
		,getData: function() {
			var self = this;
			var cs = self.$;
			var vm = self.vm.$;
			return {
				StartTime: cs.startTime.getData()
				,EndTime: cs.endTime.getData() || 0
				,SpotId: vm.SpotId && vm.SpotId.split(',').map(Number)
				,UserId: vm.UserId && vm.UserId.split(',').map(Number)
			};
		}
		,validate: function(data) {
			if(!data.StartTime || !data.EndTime) {
				pubjs.alert(LANG('请选择对应的日期。'));
				return false;
			}

			var self = this;
			var cs = self.$;
			var s = cs.startTime.getData(true);
			var e = cs.endTime.getData(true);
			if(s > e) {
				pubjs.alert(LANG('开始日期不能大于结束日期'));
				return false;
			}

			return true;
		}
		,onInputClick: function(ev) {
			var self = this;
			switch(ev.name){
				case 'save':
					self.save();
					break;
				case 'cancel':
					pubjs.controller.navigate('');
					break;
			}

			return false;
		}
	});

	exports.base = Base;
});